package cn.buildoncloud.labor.workermanapplet.util;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * 日期工具类
 * Description: cn.buildoncloud.labor.workermanapplet.util
 * Created by CuiZibo on 2018/11/5 18:20
 */
public class DateUtil {

    private static final Locale DEFAULT_LOCALE = Locale.CHINA;

    private static final SimpleDateFormat YMDHMS_SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    private static final SimpleDateFormat YMD_SDF = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * Date类型 yyyy-MM-dd HH:mm:ss  转String类型
     *
     * @param dateTime
     * @return
     */
    public static String dateTime2StrDateTime(Date dateTime) {
        return YMDHMS_SDF.format(dateTime);
    }

    /**
     * String类型 yyyy-MM-dd HH:mm:ss 转 Date类型
     * @param strDateTime
     * @return
     */
    public static Date strDateTime2DateTime(String strDateTime) {
        try {
            return YMDHMS_SDF.parse(strDateTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 获取当前时间(yyyy-MM-dd)
     *
     * @return
     */
    public static String getDate() {
        return DateFormatUtils.format(new Date(), "yyyy-MM-dd", DEFAULT_LOCALE);
    }

    /**
     * 获取当前时间(HH:mm:ss)
     *
     * @return
     */
    public static String getTime() {
        return DateFormatUtils.format(new Date(), "HH:mm:ss", DEFAULT_LOCALE);
    }


    /**
     * 根据 年、月 获取对应的月份 的 天数
     */
    public static int getDaysByYearMonth(Integer year, Integer month) {

        Calendar a = Calendar.getInstance();
        a.set(Calendar.YEAR, year);
        a.set(Calendar.MONTH, month - 1);
        a.set(Calendar.DATE, 1);
        a.roll(Calendar.DATE, -1);
        int maxDate = a.get(Calendar.DATE);
        return maxDate;
    }



    public static void main(String[] args) {
        System.out.println(dateTime2StrDateTime(new Date()));
    }
}
